home *** CD-ROM | disk | FTP | other *** search
/ Hornet Underground 1 / Hornet Underground.iso / demonews / demonews.119 < prev    next >
Text File  |  1996-05-07  |  50KB  |  950 lines

  1. .Start.of.DemoNews.119..............................................Size:49,755
  2.  
  3.  ______/\___________________________       __  ________________ ___  /\_______
  4.  \____   \  ________ _   _ ______   \     /  \|  \  ________   |   \/  ______/
  5.  /   |    \  _)   \   \_/   \   |    \   /    \   \  _)   \    |    \______  \
  6. /    |     \       \   |     \  |     \ /          \       \  /~\    \    /   \
  7. \_____     /_______/___|     /________/ \____\_____/_______/_________/________/
  8.     \_____/            |____/
  9.                                                       | Subscribers  :  2058
  10.          DemoNews Issue #119 - March 13, 1996         |   Last Week  :  2014
  11.                     -------------                     |   Change     :   +44
  12.      DemoNews is a newsletter for the demo scene.     | Archive Size : 2218M
  13.  It is produced by Hornet at the site ftp.cdrom.com.  |   Last Week  : 2169M
  14.     Our demo archive is located under /pub/demos.     |   Remaining  :  733M
  15.                                                       |
  16. =-[Contents]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  17.  
  18.    Line    Section
  19.  ------    -------------------------------------------------------------------
  20.      31    Calendar
  21.      53    Top Downloads
  22.      76    Uploads
  23.     363    Articles
  24.     365      Introduction................................Snowman
  25.     422      Demoscene Music WWW Pages...................GD
  26.     515      Intro to 3D Graphics - Volume 04............Kiwidog
  27.     927    Subscribing
  28.     942    Closing
  29.  
  30.  
  31. =-[Calendar]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  32.  
  33.  Date      Event               Location  Concact Points
  34.  --------- ------------------- --------- -------------------------------------
  35.  29 Mar 96 Mekka               Germany   PV80090@PH80090.HH.eunet.de
  36.            http://www.xs4all.nl/~blahh/RAW/Parties/Invitations/Mekka.html
  37.  
  38.  02 Apr 96 The Gathering       Norway    mikaels@powertech.no
  39.            http://www.ifi.uio.no/~uwek/Crusaders/TG
  40.  
  41.  05 Apr 96 Symposium           Germany   gandalf@blackbox.shnet.org
  42.            http://134.28.37.10/~frank/bbx-sym96/bbx96.html
  43.  
  44.  06 Apr 96 X                   Netherlnd cba@xs4all.nl
  45.            http://www.xs4all.nl/~herkel
  46.  
  47.  31 May 96 Naid                Canada    naid@autoroute.net
  48.            http://www.autoroute.net/~naid
  49.  
  50.  More information is at http://hagar.arts.kuleuven.ac.be/~sdog/party.html
  51.  
  52.  
  53. =-[Top Downloads]-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  54.  
  55.  NOTE: Statistics are sometimes slightly off due to symbolic links, mirrors,
  56.  renamed files, and other things that affect the log files.
  57.  
  58.  Pc Times FileName.Ext      Pc Times FileName.Ext       Pc Times FileName.Ext
  59.  -- ----- --------.---      -- ----- --------.---       -- ----- --------.---
  60.  <COMBINED LIST>            <DEMOS LIST>                <GRAPHICS LIST>
  61.   1 00356 acdu0396.zip       1 00182  animate.zip        1 00027 dst_frac.zip
  62.   2 00239     cp16.zip       2 00169 nooon_st.zip        2 00024   vamp10.zip
  63.   3 00213   cp1666.zip       3 00159 mfx_tgr2.zip        3 00024   airwar.zip
  64.   4 00194    ft206.zip       4 00153 ftj_ymca.zip        4 00021 veced300.zip
  65.   5 00186 scrmt321.zip       5 00127 unreal11.zip        5 00019 icekngdm.zip
  66.   6 00182  animate.zip      <MUSIC LIST>                <CODE LIST>
  67.   7 00169 nooon_st.zip       1 00238     cp16.zip        1 00089 dn116_3d.zip
  68.   8 00159 mfx_tgr2.zip       2 00213   cp1666.zip        2 00083   onesrc.zip
  69.   9 00153 ftj_ymca.zip       3 00194    ft206.zip        3 00068 dos32v33.zip
  70.  10 00139    ft204.zip       4 00186 scrmt321.zip        4 00056  dcc_3de.zip
  71.                              5 00139    ft204.zip        5 00053  ggouro2.zip
  72.  
  73.  <Files downloaded total : 061148>
  74.  
  75.  
  76. =-[Uploads]-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  77.  
  78. =----------------------------------------------------------[File Information]-=
  79.  
  80.  All files listed below are on ftp.cdrom.com under /pub/demos.
  81.  Please keep in mind that all ratings are subjective.
  82.  
  83.  If your file transfers are too slow, there are several alternatives:
  84.  
  85.    Our code mirror is ftp.co.iup.edu/code.  ftpadmin@ftp.co.iup.edu for help.
  86.    Try getting files from the web at http://www.cdrom.com/pub/demos
  87.    See /hornet/demonews/demonews.102 for details about ftpmail.
  88.  
  89.  You may also wish to check out a couple of other good demo sites:
  90.  
  91.    ftp://ftp.arosnet.se/e:\demo maintained by Zodiak / Cascada
  92.    ftp://hagar.arts.kuleuven.ac.be/demos maintained by Sleeping Dog / Natives
  93.  
  94.  Here are also a few good WWW links to try out (under construction):
  95.  
  96.    http://www.th-zwickau.de/~maz/sound.html for music and sound utils
  97.  
  98.  
  99. =-------------------------------------------------------------[Demos:General]-=
  100. Location /demos/alpha             Size Rated Description
  101. =-------------------------------- ---- ----- ---------------------------------=
  102. /1994/u/utopia.zip                 969 *+    Utopia by Vertex
  103. /1995/p/poliisi.zip                775 ***+  Poliisi by Coma
  104. /1995/s/supnova3.zip               218 *+    BBS: Super Nova by Palpatine
  105. /1996/m/minidemo.zip                35 **+   Minidemo by Crucial
  106. /1996/r/ringnes.zip                254 ***   Ringens Motion by The Joker
  107. /1996/r/rush_pkl.zip               283 **    Rushed by Pankakeland
  108. /1996/s/simplesl.zip              1458 ***   Simple by Spanish Lords
  109. /1996/s/sl_fake.zip                 88 ***+  Fake by Sublogic
  110. /1996/s/slr-s599.zip                 1 ***   Simple Scroller by Solar Designer
  111. /1996/s/snowfire.zip                 9 *+    Snowfire by Anaconda
  112.  
  113. Assembly 1995 4k Intros (ASM95:in4k:)
  114. /1995/h/havoc.zip                    7 ****  05: Havoc by Extreme
  115. /1995/c/clxfinal.zip                10 ***+  07: Complexity by Byteam
  116. /1995/s/strictly.zip                 4 ***+  14: Strictly 4kb by Olppa
  117. /1995/0-9/165plasm.zip               2 ***+  XX: 165b Raster Plasma by Project
  118. /1995/0-9/4kg.zip                    5 ***+  XX: 4kg by Lopez,Firehawk
  119. /1995/0-9/4magic.zip                 2 ***   XX: Four Magic Kaas by The Natives
  120. /1995/a/acidrain.zip                 4 **    XX: Acid Rain by ???
  121. /1995/a/act.zip                      8 **+   XX: Act by Placidia
  122. /1995/a/aivopesu.zip                 3 *+    XX: Aivopesu by Cannibal
  123. /1995/a/alifemem.zip                 3 **    XX: Alife by Mriq
  124. /1995/a/asm95zea.zip                 4 **    XX: 0.5 Weeks by ???
  125. /1995/b/bbuumi.zip                   5 ***   XX: Bittibuumi by Rubicon
  126. /1995/b/bug.zip                      3 **    XX: Bug by ???
  127. /1995/c/chaos95r.zip                 3 **    XX: Bestial Chaos
  128. /1995/c/crystal.zip                  4 ***   XX: Crystal by Juho Ahonen
  129. /1995/e/elements.zip                 3 ****  XX: Elements by ???
  130. /1995/f/finland.zip                  3 ***+  XX: Finland by ???
  131. /1995/f/fucko.zip                    2 *+    XX: F. The Optimizing by Astute
  132. /1995/h/hellfire.zip                 6 *     XX: Hellfire by Illumination
  133. /1995/k/kakka.zip                    1 *+    XX: Kakka by Mov,Inzu
  134. /1995/m/math.zip                     4 ***   XX: Math by Interamni
  135. /1995/m/mp!hiloi.zip                 3 *+    XX: Hiloi by Masa,Pena
  136. /1995/n/nunna.zip                    6 +     XX: Nunna by Akesoft
  137. /1995/o/ortni.zip                    4 **    XX: Ortni by Voxel
  138. /1995/p/pamppu.zip                   7 *     XX: Pamppu by Akesoft
  139. /1995/r/riuku.zip                    7 +     XX: Riuku by Akesoft
  140. /1995/s/shapes.zip                   3 **    XX: Shapes by Petman
  141. /1995/s/smooth.zip                   4 ****  XX: Smooth by Pulp
  142. /1995/s/starlit.zip                  6 **+   XX: Star Light by XoR
  143. /1995/t/tan.zip                      4 ***   XX: Tan by Marlon Berlin
  144. /1995/t/taxintro.zip                 6 *+    XX: Taksi by Brainlez Coders
  145. /1995/t/tight.zip                    3 **    XX: Tight by Pyre
  146. /1995/w/wiswatch.zip                 7 **+   XX: Wise Watcher by Acid Pixhell
  147.  
  148. Movement 1995 Demos (MOV95:demo:)
  149. /1996/u/ulc_star.zip              1677 ***   03: Star Reach by Unl. Creations
  150.  
  151. The Party 1995 Demos (TP95:demo:)
  152. /1996/a/ancircs3.zip              1446 ****  17: Circuit (S3 pre) by Analogue
  153.  
  154. The Party 1995 4k Intros (TP95:in4k:)
  155. /1995/t/tc_par.zip                  15 ****+ EE: 4k Intro by The Coexistence
  156.  
  157. General Probe 1996 4k Intros (GP96:in4k:)
  158. /1996/s/stc_4078.zip                 4 ***   ??: 4078 by Substance
  159.  
  160. Volcanic 1996 Demos (VOL96:demo:)
  161. /1996/e/e_magic.zip                446 ***+  ??: Magic by Eclipse
  162. /1996/e/exine.zip                 1313 ***+  ??: Exine by Anarchy
  163.  
  164. =-------------------------------------------------------------[Music:General]-=
  165. Location /demos/music             Size Rated Description
  166. =-------------------------------- ---- ----- ---------------------------------=
  167. /songs/1995/xm/v/vg-sunri.zip      219 **    Sunrise Experience by vildauget
  168. /songs/1996/it/j/jasmine.zip       125 ***   Jasmine Tea by Lord Blanka
  169. /songs/1996/it/k/kanamon.zip       254 ***+  Kanamon Worms by Lord Blanka
  170. /songs/1996/it/l/lizlevit.zip      155 **+   Leviathan 2010 by Lizard
  171. /songs/1996/s3m/f/fdn-ffg.zip      188 **+   Fall from Grace by Ender
  172. /songs/1996/s3m/f/fm-energ.zip     274 ****  Energia (Planar Remix) by Necros
  173. /songs/1996/s3m/w/wppeals.zip       25 ***   West Point Peals by Paul Watkins
  174. /songs/1996/xm/e/el-alsom.zip      134 **+   Always Somet. by Electric Lucidity
  175. /songs/1996/xm/e/el-scorp.zip      384 ***   Scorpion Win. by Electric Lucidity
  176. /songs/1996/xm/e/el-shiom.zip       82 ***   She Is Once.. by Electric Lucidity
  177. /songs/1996/xm/e/el-subtl.zip      157 **+   Error of Sub. by Electric Lucidity
  178. /songs/1996/xm/e/el-toeac.zip       16 **    To Each Thei. by Electric Lucidity
  179. /songs/1996/xm/e/exjungle.zip       81 *     1st Try Jungle by Stefan Trischler
  180. /songs/1996/xm/g/glory.zip          95 *+    Glory by Pix
  181. /songs/1996/xm/g/gwattack.zip        0 **    Global World Att. by Eye of Hurr.
  182. /songs/1996/xm/h/happy.zip          61 **    Happy Land by Pix
  183. /songs/1996/xm/h/herelies.zip     1081 +     Here Lies One by Noiseman
  184. /songs/1996/xm/i/icu.zip           312 **+   I See You by Pix
  185. /songs/1996/xm/u/undefeel.zip      289 ****+ Undetermined Feelng by Ryan Cramer
  186. /songs/1996/xm/u/use-chin.zip      147 **    Cyber China by Dustbin
  187. /songs/1996/xm/u/use-hypn.zip      195 **+   Hypnosis by Nabo
  188. /songs/1996/xm/u/use-icy.zip        88 ***   Icy Flower by Nabo
  189. /songs/1996/xm/u/use-trib.zip      475 ***   Tribal Steps by Dustbin
  190.  
  191. =--------------------------------------------------------[Music:Non-Reviewed]-=
  192. Location /demos/music             Size Description
  193. =-------------------------------- ---- ---------------------------------------=
  194. /programs/convert/amf2mod.zip       23 AMF to FastTracker 1.0 MOD converter
  195. /programs/convert/amf2s3m.zip        8 AMF to ScreamTracker 3 Module Converter
  196. /programs/misc/ask.zip               4 Font changer for ST3 + ImpulseTracker
  197. /programs/players/amp121.zip        40 AMP AWE32 Module Player v1.21
  198. /programs/players/awemp145.zip      59 AWEMP AWE32 Module Player v1.45
  199. /programs/players/cmod305.zip      107 CapaMod player v3.05
  200. /programs/players/cp1666.zip       495 Cubic Player v1.666
  201. /programs/players/cwd_ppp.zip       19 Pervo Player v1.0
  202. /programs/players/genmod.zip       433 Generic Module Player v1.3
  203. /programs/players/juicy17.zip       38 Juicy Player MOD player v1.7
  204. /programs/players/mod.zip           12 MASSOUND Player v9
  205. /programs/players/starp225.zip      34 StarPlayer v2.25
  206. /programs/players/timidity.zip     219 TiMIDIty Player+Source v0.90
  207. /programs/players/wemp96.zip        37 Wavefront Extended Module Player v0.96
  208. /programs/rippers/burp100.zip       31 BURP Ripper v1.00
  209. /programs/rippers/rippr495.zip     181 Ripper v4.95
  210. /programs/samplers/wav_2_xi.zip     14 WAV2XI sample converter v0.72
  211. /programs/samplers/wavetoxi.zip     20 Wave to XI sample converter
  212. /programs/trackers/amusic11.zip     81 Amusic AdLib tracker v1.1
  213. /programs/trackers/digitr30.zip    168 DigiTracker v3.0
  214. /programs/trackers/ft206.zip       345 FastTracker v2.06
  215. /programs/trackers/it105.zip       362 ImpulseTracker v1.05
  216. /programs/trackers/radpas13.zip     11 Reality AdLib -> TP Libraries v1.3
  217.  
  218. =----------------------------------------------------------[Graphics:General]-=
  219. Location /demos/graphics          Size Rated Description
  220. =-------------------------------- ---- ----- ---------------------------------=
  221. /disks/1994/cyrout.zip              34 +     Anti Lord Cyrix by Various Artists
  222. /disks/1996/lt-psych.zip           661 **    Psychedelia by Light
  223. /disks/1996/lt-x9.zip              434 **+   A Journey Through X9 by Light
  224.  
  225. Abduction 1995 Graphics (ABD95:grfx:)
  226. /images/1995/j/jmagic.zip           33 ****  01: Jmagician by Der Piipo
  227. /images/1995/m/madsanta.zip         32 ***+  02: Mad Santa by Dice
  228. /images/1995/e/escape.zip          113 ***+  03: Escape by Slimy Devil
  229. /images/1995/m/melody.zip           34 **    05: Melody by Cross
  230. /images/1995/k/k_picas.zip          26 **+   06: 45 Minute Picasso by Kowtow
  231. /images/1995/b/brown_ey.zip         56 **+   07: Brown Eyed Girl by Tohe
  232. /images/1995/b/babyface.zip         54 **+   08: Babyface by Gnome
  233. /images/1995/b/bathtime.zip         28 *+    10: Bathtime by Damac
  234. /images/1995/s/squid.zip            58 ***+  11: Squid by Exeter
  235. /images/1995/k/kiesus.zip           34 **+   12: Kiesus by Prager
  236. /images/1995/p/prayer.zip          132 ***   13: Prayer by Captain Drago
  237. /images/1995/c/centurio.zip         49 ***+  ??: Centurion by ???
  238. /images/1995/e/ernest.zip           43 *+    ??: Ernest by ???
  239. /images/1995/g/grn_sig.zip           6 **+   ??: ??? by ???
  240. /images/1995/k/kapy_fin.zip         20 **+   ??: ??? by ???
  241. /images/1995/k/kissa62.zip          34 ***+  ??: ??? by ???
  242. /images/1995/n/nosigne.zip         138 [n/a] ??: ??? by ???
  243. /images/1995/s/shqsign.zip           5 +     ??: ??? by ???
  244. /images/1995/s/sunset.zip           19 **    ??: Sunset by ???
  245.  
  246. Assembly 1995 Graphics (ASM95:grfx:)
  247. /images/1995/f/fiction2.zip         38 ****+ 01: Fiction by Visualize
  248. /images/1995/m/mystery.zip          43 ****  02: Mystery by Artifec
  249. /images/1995/a/agony.zip            36 ***   03: Agony by Jogi
  250. /images/1995/v/valk31.zip          163 ****  04: Valkyria by Visigoth
  251. /images/1995/a/an_axe.zip           55 ****  07: An Axe by Yoga
  252. /images/1995/p/phobic.zip           65 ****  08: Phobic by Ironman
  253. /images/1995/b/baby.zip             45 **+   10: Baby by Facet & Super
  254. /images/1995/g/grandma.zip          35 ***   12: Grandma by Tyshdomolo
  255. /images/1995/n/nrtzrkbl.zip        104 **    14: Blend by Netesten
  256. /images/1995/a/after_li.zip         43 **    ??: ??? by ???
  257. /images/1995/b/battlewa.zip         75 **    ??: ??? by ???
  258. /images/1995/c/cowboy.zip           13 +     ??: Cowboy by ???
  259. /images/1995/d/dasboot6.zip         22 +     ??: Das Boot by Hazard
  260. /images/1995/d/deespalf.zip         35 ***+  ??: ??? by ???
  261. /images/1995/d/dragon.zip           92 ***   ??: ??? by ???
  262. /images/1995/d/ducepic.zip          64 **+   ??: ??? by Duce
  263. /images/1995/f/firedray.zip         30 ***+  ??: ??? by ???
  264. /images/1995/f/frost.zip            14 +     ??: Frost by Nagath
  265. /images/1995/h/hcosmic.zip          21 ***   ??: ??? by ???
  266. /images/1995/h/hellview.zip         63 *     ??: ??? by ???
  267. /images/1995/h/huma2.zip           131 ***   ??: Huma by Dreamer
  268. /images/1995/i/imp_wolf.zip         77 ***   ??: ??? by Wolf
  269. /images/1995/i/indian.zip          118 **+   ??: Indian by M-Stone
  270. /images/1995/i/ingas.zip            88 ***+  ??: Ingas by Louie
  271. /images/1995/l/ladywar2.zip         45 *+    ??: Lady at War by Mindeye
  272. /images/1995/o/outspace.zip         33 ****  ??: Outer Space by Toxic
  273. /images/1995/p/pad-newb.zip         30 *+    ??: ??? by Pad
  274. /images/1995/p/pilvii.zip           27 **+   ??: ??? by Saffron
  275. /images/1995/r/rabbits.zip          31 ***+  ??: Rabbits by ???
  276. /images/1995/r/rosie.zip            39 ***   ??: Rosie by ???
  277. /images/1995/s/sami2.zip           131 **    ??: Sami by Cork
  278. /images/1995/s/si-nrn.zip           47 **+   ??: ??? by ???
  279. /images/1995/s/sld-domi.zip         52 ***   ??: Domination by Slimy Devil
  280. /images/1995/t/tb_ass95.zip        102 ***   ??: ??? by Treabeard
  281. /images/1995/w/warrior.zip          47 **    ??: Warrior by Menace
  282. /images/1995/w/whoisit.zip          16 **+   ??: Who Is It by ???
  283.  
  284. Assembly 1995 Raytracing (ASM95:grtc:)
  285. /images/1995/s/sld-ftch.zip        223 **    ??: Fetch by Slimy Devil
  286.  
  287. Juhla 2 1995 Graphics (JUH95B:grfx:)
  288. /images/1995/m/mistydrm.zip         27 ****+ 01: Misty Dream by Prayer
  289. /images/1995/d/dpclock.zip          35 ****  02: Clock Tower by Der Piipo
  290. /images/1995/p/portrait.zip         27 ****  03: Man's Portrait by Nik
  291. /images/1995/b/boymansk.zip         60 ****  04: Boy Man Skull by Slimy Devil
  292. /images/1995/t/temple.zip           31 **+   05: Temple by Ember
  293. /images/1995/d/demon.zip            21 *     06: Demon by Gnome
  294. /images/1995/s/sadflash.zip         28 *     07: Sad Flasher by Primon
  295. /images/1995/0-9/2oddity.zip        34 *+    08: The Two Oddity by Mazor
  296. /images/1995/f/fright.zip           31 *+    09: Fright by Cork
  297. /images/1995/m/mvmadman.zip         17 *+    10: Man Man by Mov
  298. /images/1995/n/nitghoul.zip         25 *     11: Ghoul by Nitric
  299. /images/1995/t/theslob.zip          23 **+   12: The Slob by Duke
  300. /images/1995/l/lizard.zip           28 *+    13: Lizard by Damac
  301. /images/1995/v/valley.zip            8 +     14: Valley by Mithrandir
  302. /images/1995/g/graffiti.zip         18 **    15: Graffiti by Manticore
  303. /images/1995/s/steelfac.zip         50 *     16: Steel Face by Emetic
  304.  
  305. The Gathering 1994 Graphics (TG94:grfx:)
  306. /images/1994/z/zzmadman.zip         48 ****  01: ZZ Madman by Fairfax
  307. /images/1994/t/tonyofra.zip         56 ****  02: Tony of Razor by Tony
  308. /images/1994/i/inyourfa.zip         42 ****+ 03: In Your Face by Archmage
  309. /images/1994/s/spacegua.zip         48 ****  04: Space Guardian by BCR
  310. /images/1994/j/julia.zip            33 ***+  05: Julia by Decker
  311. /images/1994/c/conan.zip            53 ***   06: Conan by Blue Devil
  312. /images/1994/d/dentist.zip         164 ***+  07: Dentist by Tiedye
  313. /images/1994/i/illusion.zip         69 **+   08: Illusionia by Bridgeclaw
  314. /images/1994/b/badtrip.zip          57 ***+  09: Bad Trip by Pal
  315.  
  316. The Party 1993 Graphics (TP93:grfx:)
  317. /images/1993/y/yell.zip              7 ****+ 01: Yell by Lithium
  318. /images/1993/s/skyr_pxl.zip         66 ****  02: ??? by Pixel
  319. /images/1993/w/watery.zip           10 ****  03: Watery by Arachnatron
  320. /images/1993/w/windows.zip           2 +     04: Windows Sucks by Gore
  321. /images/1993/a/alita.zip            29 ***+  05: Alita by Sigfrid
  322. /images/1993/a/air.zip              31 ****  06: Air by Marvel
  323. /images/1993/h/horror.zip           20 ***   07: Horror by Lord Something
  324. /images/1993/a/arnial.zip           14 ****  08: Arnold by Joachim
  325. /images/1993/w/womanru1.zip         21 ***   09: Woman by Trau
  326. /images/1993/a/aghev02.zip          20 ***   10: Aghev by Havoe
  327. /images/1993/s/sti_ephr.zip         31 **+   11: ??? by Sti
  328. /images/1993/m/mulkero.zip           2 *     12: Mulkero by Phontom
  329. /images/1993/v/vis16.zip             9 **+   13: Vis 16 by Zeb
  330. /images/1993/s/sul_comp.zip         17 **    14: Sul by Barti
  331. /images/1993/a/alex.zip             13 **+   15: ??? by Alex
  332. /images/1993/m/max_comp.zip         47 **+   16: Max by Zebig
  333. /images/1993/i/inteli.zip           13 *     17: Intel by Jeskola Productions
  334. /images/1993/s/sonic_ca.zip         14 **    18: Sonic by Consel
  335. /images/1993/a/apple.zip            17 *+    19: Apple by Neuronik
  336. /images/1993/c/chaos.zip            13 **    20: Chaos by Maestro
  337. /images/1993/s/strawbry.zip         21 **    21: Strawberry by PL
  338.  
  339. Wired 1994 Graphics (WIR94:grfx:)
  340. /images/1994/u/ukko39.zip           66 ****  01: Ukko by Zuul Design
  341. /images/1994/n/nadia.zip            39 [n/a] 02: Nadia by Moebius
  342. /images/1994/r/robot.zip            73 ***+  03: Robot by Youfi
  343. /images/1994/h/hn-ranma.zip         20 **    ??: Ranma by Hypernova
  344. /images/1994/s/sunsweat.zip         59 **    ??: Sunsweath by Balex-T
  345. /images/1994/t/tarzan.zip           44 *     ??: Tarzan by Fred
  346.  
  347. =-----------------------------------------------------[Graphics:Non-Reviewed]-=
  348. Location /demos/graphics          Size Description
  349. =-------------------------------- ---- ---------------------------------------=
  350. /party/1993/a/a93-pics.zip         360 Photos from ASM93 taken by Extreme
  351.  
  352. =------------------------------------------------[Miscellaneous:Non-Reviewed]-=
  353. Location /demos                   Size Description
  354. =-------------------------------- ---- ---------------------------------------=
  355. /hornet/demonews/demonews.116       55 DemoNews 116
  356. /hornet/demonews/demonews.117       38 DemoNews 117
  357. /hornet/demonews/demonews.118       45 DemoNews 118
  358. /info/traxw/traxweek.048            29 TraxWeekly 48
  359. /info/traxw/traxweek.049            42 TraxWeekly 49
  360. /info/traxw/traxweek.050            65 TraxWeekly 50
  361.  
  362.  
  363. =-[Articles]=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  364.  
  365. =---------------------------------------------------[Introduction]--[Snowman]-=
  366.  
  367.  Hello all, and welcome to DemoNews issue 119.
  368.  
  369.  CELEBRATION.  Our mirror at ftp.luth.se has been restored.  I made a note
  370.  to myself to check the exact directory where the mirror resided on their
  371.  site. Unfortunately, when it came time to write this introduction I could
  372.  not access the site.  But I have faith... the mirror is there and Europeans
  373.  should experience a speed gain when downloading.
  374.  
  375.  I highly encourage you all check out that #trax people picture web page
  376.  that GD mentions in his article below.  You never know who or what you
  377.  might find there.
  378.  
  379.  Many of you may wonder why this issue is out so late.  This week I actually
  380.  have two somewhat legitimate excuses.
  381.  
  382.  First, I couldn't release the issue yesterday because our entire company
  383.  had to change IP addresses after an ISP change.  All of the servers in our
  384.  department were offline at one point or another.  The upside to this is
  385.  that we now have a direct T1 connection to wcarchive here and I'm getting
  386.  177k/s transfer rates.  This makes me very happy.  :)
  387.  
  388.  Second, and more importantly, I've found a kindred spirit.  Those of you in
  389.  the music scene can hop on #trax.  Those who code can read
  390.  comp.sys.ibm.pc.demos.  But what is a demo maintainer to do?  There just
  391.  aren't that many forums where open discussion about archive management take
  392.  place.
  393.  
  394.  One of the three Simtel archive maintainers is Michigan native Christopher
  395.  Gavula.  He also happens to be affiliated with Walnut Creek CDROM and is a
  396.  Novell NetWare expert.  He flew here to California two days ago to assist
  397.  us with network upgrades.  The two of us started talking about archive
  398.  maintenance.  Then we _really_ started to talk about archive maintenance.
  399.  It turns out, oddly enough, that the Simtel and Hornet Archives are very
  400.  closely related.
  401.  
  402.  We spent a great deal of time with a whiteboard and markers, drawing
  403.  diagrams of how we handle files and update descriptions.  I spotted several
  404.  intriguing ways to improve performance on our site.  It was amazing.  Here
  405.  was someone in an unrelated field talking about how he moves files out of
  406.  /incoming and keeps the base directory tightly arranged.  After hours of
  407.  discussion, I came to the conclusion that the Hornet Archive and Simtel
  408.  were at similar stages of development, but that both archives were years
  409.  ahead of almost all other ftp.cdrom.com-based archives.
  410.  
  411.  So why am I telling you all of this?
  412.  
  413.  Consider it a precursor to a more organized and efficient demo archive. One
  414.  that will be tailored to meet _your_ specific needs.  One that is
  415.  searchable, user-correctable, modifiable, and easily maintainable.  One
  416.  that is not only functional but also aesthetically appealing.  There's a
  417.  real-time raytraced golden light in our near future.
  418.  
  419.  Snowman / Hornet - r3cgm@cdrom.com
  420.  
  421.  
  422. =-------------------------------------------[Demoscene Music WWW Pages]--[GD]-=
  423.  
  424.  Back in demonews 102, I reviewed a couple demoscene-related worldwide web
  425.  pages. I had hoped to make it a regular demonews feature, but this didn't
  426.  happen.
  427.  
  428.  Recently, a number of web pages have surfaced on the Internet which are
  429.  focused on computer music. I would like to direct your attention to three
  430.  such webpages of interest to the music scene.
  431.  
  432.  _____Virtual Music
  433.  
  434.  The Virtual Music page is designed as a central point for gathering
  435.  information on computer music or for contacting other musicians. One of the
  436.  links offered on this page is a frequently asked questions guide for the
  437.  alt.binaries.sound.modules newsgroup.
  438.  
  439.  User links are sorted alphabetically and a click on the letter of the
  440.  user's choice will go to that section of the alphabetic listing. This would
  441.  be a good place to use html frames, and put the alphabetic selector in
  442.  another window, but the author of this page stresses his desire to make it
  443.  compatible with as many browsers as possible.
  444.  
  445.  Webpage URL  : http://www2.gvsu.edu/~behrensm/vmp/index.html
  446.  Maintainer   : Matt Behrens (Zigg)
  447.  Send email to: behrensm@river.it.gvsu.edu
  448.  
  449.  _____#trax Homepage
  450.  
  451.  This page serves as a home for the IRC channel #trax which is frequented by
  452.  novice and expert demoscene musicians alike. The page is very well
  453.  organized, and upon startup provides the user with an organized menu.
  454.  
  455.  There are two main sections to this page and several smaller sections. The
  456.  two main sections also have a large icon on the main page.
  457.  
  458.  The 'People' section, one of the two large branches from the main page, is
  459.  a listing of people who frequent #trax. For most of the people listed, a
  460.  picture is shown. All of the pictures that do appear have been scaled to
  461.  the same size to provide a consistent appearance.
  462.  
  463.  In each personal biography for every person listed on this page, their real
  464.  name, alias, email address, group affiliation, and talent is listed.
  465.  Homepage links are provided through a click on the person's alias, email
  466.  links are available by clicking on the email address, and group links are
  467.  available by clicking on the group name.
  468.  
  469.  The other large section, the 'Groups' section, is a newer addition to the
  470.  page and does not have many groups listed as of yet. Groups that are listed
  471.  have a large group logo next to some brief group information. Listed is the
  472.  group name, members, talents, and a contact email address.
  473.  
  474.  The maintainer of this page is Ryan Vettese (aka b0b). His email address
  475.  is: b0b@datex.ca
  476.  
  477.  Webpage URL  : http://www.datex.ca/trax
  478.  Maintainer   : Ryan Vettese (b0b)
  479.  Send email to: b0b@datex.ca
  480.  
  481.  _____Impulse Tracker Homepage
  482.  
  483.  This is a page dedicated to Impulse Tracker, a module composition program
  484.  coded by Jeffrey Limm. This tracker was first released in December 1995.
  485.  Its interface is similar to that of Scream Tracker 3.
  486.  
  487.  This page provides users with a central location from which they can
  488.  download the newest version of the program, download a few Impulse Tracker
  489.  modules, send email to the author of the program, and link to the Impulse
  490.  Tracker module directory on the Hornet Demo archive.
  491.  
  492.  Also provided on the page is the program's update history and module format
  493.  technical specifications, as included with each release.
  494.  
  495.  The page is well structured, and is an excellent resource for fans of this
  496.  tracking program.
  497.  
  498.  Webpage URL  : http://www.citenet.net/noise/it
  499.  Maintainer   : Shawn M.
  500.  Send email to: shawnm@citenet.net
  501.  
  502.  _____Conclusion
  503.  
  504.  The information provided on all of these pages is current and generally
  505.  well organized. The maintainers have done a great job with the setup, and
  506.  the content of each page reflects its title.
  507.  
  508.  The music scene has grown by great numbers because of the power of the
  509.  Internet. Witness the computer music revolution through the eye of your web
  510.  browser.
  511.  
  512.  GD / Hornet - gd@ftp.cdrom.com
  513.  
  514.  
  515. =------------------------------[Intro to 3D Graphics - Volume 04]--[Kiwidog]-=
  516.  
  517.  _____Introduction
  518.  
  519.  Hi again! :-)
  520.  
  521.  Well, it looks like we're done with the beginning 3D info, so it's time to
  522.  take a break for a few weeks and change gears to something that people seem
  523.  to be very interested in.  You know 'em, you love 'em, and you love to hate
  524.  'em....
  525.  
  526.  Polygon fillers.
  527.  
  528.  Or perhaps I should call them "shading algorithms"... well, not all of them
  529.  are shading (f.ex. texture mapping), so "polygon fillers" is probably the
  530.  better term.  Anyway, the fillers I'm going to cover over time are ones we
  531.  seem to see quite a bit of these days...
  532.  
  533.  - Flat/Lambert Shading (today's article! Yippee! :)
  534.  - Gouraud Shading
  535.  - Phong and Interpolated Phong Shading
  536.  - Affine Texture Mapping
  537.  - Perspective Texture Mapping
  538.  - Environment Mapping (better called Reflection Mapping)
  539.  
  540.  There will be other articles in between all of these; for example, I've
  541.  decided to move up the discussion of BSP trees to the NEXT ARTICLE, #5, up
  542.  from what would have been #10 or so.  This is because you can't do solid
  543.  objects without some kind of face ordering, and the three generic options
  544.  seem to be sorting (painter's algorithm), Z-buffering, and BSP trees.
  545.  
  546.  Since I hate sorting... I mean _REALLY_ hate sorting, and Z-buffering is
  547.  just a pain in the neck, BSP trees seem to be a pretty important thing to
  548.  discuss early on.  So I'm doing them for the next article.  After that,
  549.  we'll be going up through Phong before I do some other stuff before texture
  550.  mapping. This week's article is going to cover Flat Shading (shading an
  551.  entire poly with one color), and Lambert Shading (same as flat shading, but
  552.  that the one color is chosen by a lightsource).
  553.  
  554.  Hope you're prepared. :-)
  555.  
  556.  Before we begin, I've got to point out two things...
  557.  
  558.  One, the example source for article #3, (i.e. what would be DN3D_3.ZIP).
  559.  After thinking about it, sample source just to demonstrate normals without
  560.  reason is pretty asinine.  It would make more sense to actually have a USE
  561.  for those normals.  As such, I'm going to concentrate the example source
  562.  for both article #3 and this one, #4, into a single supplement, DN3D_3&4.
  563.  This will allow me to actually have a purpose for the normals I explained
  564.  last time, using them for solid objects.
  565.  
  566.  The second thing is a major thing from the last article...
  567.  
  568.  _____MAJOR Error In DemoNews 118 Within Article #3
  569.  
  570.  If you got your copy of DemoNews 118 through the email listserver, or if
  571.  you got it through FTP before around noon EST on 3/6/96, there is a major
  572.  "bug" in my 3D article.  Somehow during the course of assembling the final
  573.  DemoNews, Snowman's text editor screwed up the spacing on the vector
  574.  diagram in the middle of the article.  If your diagram looks like this.....
  575.  
  576.    P2
  577.      .___ A    P1
  578.          ----.
  579.       \
  580.        \ B
  581.         \
  582.          .
  583.          P3       . P4
  584.  
  585.  This is INCORRECT, and probably confused you if you're learning this stuff
  586.  for the first time.  The diagram SHOULD be this....
  587.  
  588.    P2
  589.      .___ A    P1
  590.          ----.
  591.               \
  592.                \ B
  593.                 \
  594.        .         \
  595.        P3         . P4
  596.  
  597.  Again, this was a problem that resulted from the text editing, which I
  598.  didn't see until after DN 118 was out, so it couldn't be prevented.  This
  599.  has happened a couple times in the past with other diagrams as well.  I'll
  600.  try to watch out for them in the future, but I want to apologize for this
  601.  one to any people who got hopelessly confused by that flaw.  The updated
  602.  diagram here should clear things up (resolving where I said the normal
  603.  goes, which point is the center point of the two vectors, etc).
  604.  
  605.  If you got DemoNews 118 through USENET or through FTP _after_ noon EST on
  606.  3/6/96, you probably have the correct version already, so don't worry about
  607.  it.  Nonetheless, if the info is pertinent, you might want to check to make
  608.  sure. :)
  609.  
  610.  Okay, now that that's resolved...
  611.  
  612.  _____Flat Filling - What's Involved?
  613.  
  614.  Just like everything else, there are many ways to do flat filling.  The two
  615.  methods I see most commonly seem to be...
  616.  
  617.  1. Dual Edge Fill - Start at the top of your polygon and work downward
  618.  simultaneously along both the left and right edges, changing lines when
  619.  vertices are hit on either side, and stop when both traces hit the final
  620.  vertex.  Fill as you go.
  621.  
  622.  2. Single Edge Buffered Fill - Draw lines along each edge, not plotting the
  623.  pixels but saving their offsets.  Fill in an edge buffer appropriately.
  624.  After all the sides are processed, use the edge buffer for the fill.
  625.  
  626.  Note that I just made up the names; if there are actual names for these
  627.  methods then substitute those in there instead. :)
  628.  
  629.  So which one of these two methods is better?  Well it depends.  I've heard
  630.  from people that the first method is faster (debatable), but that's _IF_
  631.  you get it to work.  The problem with the first method is that there are so
  632.  many conditions (like when vertices are hit along the edge, trying to
  633.  update correctly without loosing track of which side is where, and problems
  634.  with straight horizontal edges), that it becomes a big problem for
  635.  debugging.
  636.  
  637.  I recall trying that first method when I first wanted to make a poly
  638.  filler. It failed miserably, even after weeks of trying to debug it.
  639.  Nonetheless, if you get it to work, it's reportedly quite fast.  I can't
  640.  confirm this myself, as I abandoned the algorithm.
  641.  
  642.  The second method, on the other hand, is quite easy to implement, and still
  643.  quite fast from my point of view.  It also has the advantage of working for
  644.  any-number-of-sided polygons, just by pasting in a few more edge traces for
  645.  the new edges; the algo stays the same.  The versatility and ease of coding
  646.  are big advantages for it, and fortunately there are _no_ special
  647.  conditions to worry about, which helps in speed quite a bit...
  648.  
  649.  As you can probably tell, I'll be covering the second method in this
  650.  article. ;-)
  651.  
  652.  _____Overview of the Edge Buffered Fill
  653.  
  654.  The fill basically has two very distinct parts.  The first is the edge
  655.  buffering, and the second is the filler itself.
  656.  
  657.  You need to set up a memory buffer that has room for two offsets for each Y
  658.  line on the screen (in whatever resolution you use).  The two offsets total
  659.  either 4 bytes for real mode, or 8 bytes for protected mode.  Multiply that
  660.  amount by your Y resolution, and that's your buffer size.
  661.  
  662.  All we need to do is fill in this buffer with the left and right sides of
  663.  the polygon for each scanline, and then the filler will just start at the
  664.  left and fill to the right for each.  No biggie.
  665.  
  666.  So how do we fill in this buffer?  Well what we need is a special routine
  667.  that "traces" a given edge and fills in the buffer as it goes along,
  668.  checking each line to see where's it's at to know if the buffer needs to be
  669.  updated.  If the current offset is less than the leftmost offset at the
  670.  current scanline, it replaces the left offset with itself.  The same goes
  671.  for the right offset.... if the current one is greater, it replaces the
  672.  right offset with itself.  This goes on until the edge trace is done. If
  673.  you do this for all the edges of the polygon (3 for triangle, 4 for
  674.  quadrilateral, etc.), you'll have your final buffer for the filler to use.
  675.  
  676.  Well now we need to make this special edge tracer.  Well where do we begin?
  677.  It turns out we don't need to start from scratch, that much is for sure...
  678.  because most likely you've already made a lot of it.  If you think about
  679.  the fact that edges are straight lines, and they follow in a set path
  680.  moving offset by offset, you'll see that the edge tracer is just a small
  681.  modification to....
  682.  
  683.  A generic line routine. :-)
  684.  
  685.  I'm assuming you've all made a line routine by this point.  Whether it's a
  686.  fixed point line or a DDA line (the one that uses an errorterm) doesn't
  687.  matter.  The point is you've got one.  If not, there are other places you
  688.  can get information from; a good algorithm to look up is Bresenham's line
  689.  algorithm.  I can't really cover that in detail here; that would be an
  690.  article in itself, and I'm guessing that very very few of you need that
  691.  info at this point. :)
  692.  
  693.  So anyway, you've got a line routine.  Well all we need to do is use that
  694.  exact same routine, with a few modifications...
  695.  
  696.  - Replace the part (or line of code) where the pixel is drawn to a section
  697.    that checks the current offset against the left/right offsets of the
  698.    current Y line and updates if necessary.
  699.  - When the Y changes (in the major for Y-biased lines (abs(slope) > 1) and
  700.    in the minor for X-biased lines (abs(slope) < 1) ), update the current
  701.    Y line in the buffer so you know which left/right offsets to check
  702.    against.  The first Y will be the Y value from the first point, at the
  703.    start of the line.
  704.  
  705.  That's all it is! :)  If you do this for all of your edges of your polygon,
  706.  you'll have a buffer that's ready for filling.
  707.  
  708.  But wait!  What about when we first start the edge tracing?  What do we do
  709.  if there are no offsets to check against?  Are there any "initial" values
  710.  that we need?
  711.  
  712.  Yup, sure are.  Before each poly fill, you need to refill the buffer with
  713.  initial values.  You can either refill the entire buffer, or as an
  714.  optimization you can just refill the buffer just for the Y lines that the
  715.  previous poly changed.  Either way, you want to guarantee that when a trace
  716.  is the first one to hit a given Y line, it is absolutely certain it WILL be
  717.  the rightmost and WILL be the leftmost offset.  What values to use then?
  718.  Simple... use your maximum value (either FFFFh or FFFFFFFFh) for the
  719.  leftmost offset, and minimum value (0) for the rightmost.  There's not a
  720.  single line that will go down that won't replace those. :)
  721.  
  722.  Anyway, now you've got this nice filled buffer for your polygon.  Now we
  723.  just gotta fill between the edges.  Simple enough.  For each line that the
  724.  edge traces have filled in, you just start at the left offset, and fill
  725.  (rightoffset-leftoffset) pixels in.  In assembly, this is a simple thing
  726.  to do in a linear screen layout, like Mode 13h (or a blitted linear virtual
  727.  screen)...
  728.  
  729.  mov edi, leftoffset
  730.  mov ecx, rightoffset
  731.  sub ecx, edi
  732.  mov al, color
  733.  cld
  734.  rep stosb
  735.  
  736.  You could also divide the length by 4 and use stosd, then fill in the
  737.  remaining bytes after, like so...
  738.  
  739.  mov edi, leftoffset
  740.  mov ecx, rightoffset
  741.  sub ecx, edi
  742.  mov ebx, ecx
  743.  shr ecx, 2
  744.  mov eax, color  ; assuming color is already prepared to be in all 4 bytes.
  745.  cld
  746.  rep stosd
  747.  mov ecx, ebx
  748.  and ecx, 3
  749.  rep stosd
  750.  
  751.  Something like that.  There are variations and optimizations all over the
  752.  place, and I'll leave those to you to figure out. :-)
  753.  
  754.  The only thing left that the filler needs to know is exactly WHICH
  755.  scanlines are the ones that need to be filled, i.e., where's the top and
  756.  bottom of the fill process?  Well you've got several options.  One would be
  757.  to sort your vertices by Y before the fill process begins, and fill from
  758.  the Y of the top one to the Y of the bottom one (this is very very easy for
  759.  polys with low numbers of sides, like triangles).  You can also do a
  760.  tremendously slow method that checks the offset buffer each line for the
  761.  values and ignores the line if both the left is the maximum value and the
  762.  right is the minimum value, like the initialization gave it.  That's
  763.  another option. It's very inefficient unless you have polys with really
  764.  high numbers of sides, but that's extremely rare (and in my opinion kinda
  765.  dumb :) But nonetheless, it's an option.... there are lots of ways to
  766.  accomplish each step.
  767.  
  768.  And that's it!  Our flat filler is done... pretty simple, eh?  This is one
  769.  of those routines that people seem to think is a lot harder than it
  770.  actually is, until you just get right down to it and code the sucker (note
  771.  that that's with this method... I still believe that first method is damn
  772.  difficult in all honesty... I doubt I'll ever break down and code it that
  773.  way :-)
  774.  
  775.  Okay, so we can do flat filling.  Well what if we want to lightsource that
  776.  color?  That's when our normals come into play...
  777.  
  778.  _____Turning Your Flat-filler Into A Lambert-filler
  779.  
  780.  The whole idea behind lightsourcing a color is pretty simple... find the
  781.  angle between the surface and the lightsource (assumed to be a point
  782.  somewhere), and shade appropriately.  The narrower the angle (closest to
  783.  zero), the more the surface points towards the light and the brighter it
  784.  gets.  The greater the angle (approaching 90 degrees), the more the surface
  785.  gets darker and darker.  Finally, between 90 and 180 degrees, the surface
  786.  is pointing AWAY from the direction of the light and gets a "shadow" color,
  787.  which is either the ambient light color (the minimum) or pure black if
  788.  there's no ambient light (which can create some pretty cool effects
  789.  actually).
  790.  
  791.  So all we have to figure out is, how do we find the angle between the
  792.  direction of the surface and the lightsource?  Here come our normals...
  793.  
  794.  We already know from last time that our normal is the direction the surface
  795.  is "pointing" towards.  Well we can find the angle "between" two vectors,
  796.  using that thing we ignored the last time, the Dot Product... recall that
  797.  the Dot Product
  798.  
  799.  A.B = (Ax * Bx) + (Ay * By) + (Az * Bz)
  800.  
  801.  Well the cosine of the angle Theta between the two vectors A and B is
  802.  
  803.                  A.B
  804.  Cos(Theta) = ---------
  805.                |A|*|B|
  806.  
  807.  where |A| and |B| are the lengths of vectors A and B, respectively.
  808.  
  809.  Now we know that vector A is going to be our normal, so what's vector B? We
  810.  need some kind of location for the lightsource, and that's what B is for.
  811.  Our normal A is a vector from the origin, so if we make a second vector
  812.  from the origin to the light by "moving" the position of the lightsource
  813.  appropriately to preserve the same angle with the polygon, we'll get the B
  814.  vector that we need.
  815.  
  816.  Well there's a problem here... in order to move (translate) the lightsource
  817.  to be relative to the origin, we need to know where our relative origin is,
  818.  i.e. what point on the polygon is our theoretical "new" origin?
  819.  
  820.  The point you use for the relative origin will determine exactly where the
  821.  lightsource vector comes from, and will directly affect the final color.
  822.  Now if you just use one of the vertices, you'll get a major accuracy problem.
  823.  Take a cube for example... if one of the faces of the cube is pointed
  824.  directly at the lightsource, you still won't get the brightest possible
  825.  color if you use a vertex for checking, because even though the FACE is
  826.  pointed right at the light, the normal AT THAT VERTEX is certainly not.
  827.  It's parallel to the direction of the plane, but at a different place, which
  828.  will give a different angle to the light.
  829.  
  830.  So what point should we use?  Well if we think about it, we want the light
  831.  to be judged by the most average point on the polygon, since that will give
  832.  the best representation of what the color SHOULD be.  What's the most
  833.  average point on the polygon?  Why the center, of course. :)  Just average
  834.  the coordinates of all the vertices on the poly (for each component), and
  835.  the final coordinate should be right in the dead center of your surface.
  836.  This is a new vertex which otherwise is meaningless as far as the model
  837.  goes, but it's perfect to use for lightsourcing. :)
  838.  
  839.  Note, if this whole lightsourcing section has confused you to death (quite
  840.  likely with the way I talk :) then don't fret... I'll put a PCX diagram in
  841.  the supplement to clarify what I'm talking about in here.
  842.  
  843.  Now what about that "length" deal?  We need to take the Dot Product of
  844.  A and B, but then we need to divide by the length A * length B in order
  845.  to get our angle cosine.  The thing is, divides aren't cool.
  846.  
  847.  You might be realizing now why we set our normals to length 1 back in the
  848.  last article.  This is why. :)  If we have both A and B as length 1, we can
  849.  eliminate BOTH the divide AND a multiply and only use the dot product to
  850.  find our cosine! :-)  Now if you look at it, B is still not length 1.... we
  851.  don't have a clue where the lightsource is until we translate, so it's
  852.  probably not going to be length 1.  This means we'd have to do a square
  853.  root calculation and the divide anyway, to get the correct angle.
  854.  
  855.  It's at this point that you ask, what do I want to do with my lightsource?
  856.  If you plan on keeping it in the same place all the time, then you can
  857.  fudge the lighting a bit by not using surface centers but the _object_
  858.  center (like the center of a cube)... that way, you could have only one
  859.  point checked for distance against the lightsource, and that can be
  860.  precalculated to give the light a vector length of 1 from that point (for
  861.  vector B).  After all, all we really care about in a case like that is the
  862.  light's angle, not its distance.  Then, B would be length 1, and we're all
  863.  happy. :)
  864.  
  865.  On the other hand, if you'd like moving lightsources, accuracy, and shading
  866.  intensity determined NOT just by angle, but also by how far away the light
  867.  is, then you'll have to put up with the length calculation (one square
  868.  root, three multiplies, one divide).  Now the three multiplies _can_ be
  869.  avoided as they're just square calculations (X^2, Y^2, and Z^2), so if you
  870.  have the memory and know what your maximum ranges are between the
  871.  lightsource and your faces, you can pregenerate a "squares" table for those
  872.  amounts.  If the possible range is too high, you'll take a speed hit of 3
  873.  muls (not too bad in actuality).  The divide is a pain, but there's not
  874.  much we can do about it in this case.  The REAL speed thief here is the
  875.  square root...
  876.  
  877.  People have been discussing for ages how to do a fast square root.  It's
  878.  one of those things that people are perpetually trying to improve.  I
  879.  haven't kept completely up to date on the newest methods (there was one I
  880.  recently read in a C/C++ magazine on algorithms, but I can't remember the
  881.  method offhand).  So I am only familiar with two ways personally... either
  882.  make a lookup table (unacceptable unless you have a very limited number of
  883.  values, really)... or a certain fixed point square root routine.
  884.  
  885.  I don't have the room here in the article for DemoNews to explain the
  886.  algorithm for the fixed point square root that I use, but I'll explain it
  887.  in the supplement.  In the meantime, you can still experiment with the same
  888.  principles using conventional floating point (it's slow, but it'll get the
  889.  concepts down), or if you already know a fixed point sqrt(), go ahead and
  890.  use it.  But check the supplement when I release it for an explanation of
  891.  one algorithm. :)
  892.  
  893.  Okay, so we now have all the components we need, which will give us the
  894.  cosine of the angle between the lightsource wherever it is and the face
  895.  we're trying to shade.  Now you can either do one of two things... you can
  896.  judge the lighting by the cosine ITSELF (1 is brightest, going down towards
  897.  0 gets darker, 0 is the threshold, and 0 to -1 is shadow), or you can make
  898.  an arccos() table and use the angle itself.  The only disadvantage of using
  899.  the cosine alone is shading "falloff", since the cosine decreases more and
  900.  more rapidly as you approach zero.  Personally though, from the results
  901.  that I see just using the cosine itself, it's not such bad falloff that
  902.  it's worth doing an arccos() calculation for (granted, if you think it's
  903.  bad, then feel free to put that last part in). :)
  904.  
  905.  Once you have your value, if you have a color gradient going from light to
  906.  dark or vise-versa, you can directly match your cosine (or the angle
  907.  itself) to the color, and voila you're done!  Just drop that color into
  908.  your new flat filler, and take 'er away. :-)
  909.  
  910.  Well I've run WAY over my space limit for this article, so I'm going to
  911.  have to stop here... check out the supplement when I finish it (it will be
  912.  DN3D_3&4.ZIP under ftp.cdrom.com/pub/demos/incoming/code) for source
  913.  demonstrating the normals, flat filler, and lightsource calculations.  I'll
  914.  also cover that fixed point square root that I couldn't fit in here. :)
  915.  
  916.  Next time, we'll take an in-depth look at BSP trees, since I think they're
  917.  far too cool to put off until later.  And for those of you who already know
  918.  BSP trees, DON'T ignore that article!  I'll be covering a different kind of
  919.  tree generator that I think is more efficient than the typical recursive
  920.  method. :-)
  921.  
  922.  Until next time...
  923.  
  924.  Kiwidog / Hornet , Terraformer - kiwidog@vt.edu
  925.  
  926.  
  927. =-[Subscribing]-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  928.  
  929.  _____How to subscribe to DemoNews
  930.  
  931.  Mail to : listserver@unseen.aztec.co.za
  932.  Body    : subscribe demuan-list [first_name] [last_name]
  933.  
  934.  The listserver will send DemoNews to your e-mail's return address.
  935.  
  936.  _____Back Issues
  937.  
  938.  Older issues of DemoNews can be located under /demos/hornet/demonews.
  939.  Newly released issues of DemoNews are posted to /demos/incoming/news.
  940.  
  941.  
  942. =-[Closing]-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  943.  
  944.  For questions and comments, you can contact us at r3cgm@cdrom.com
  945.  Your mail will be forwarded to the appropriate individual.
  946.  
  947.  
  948. ...........................................................End.of.DemoNews.119.
  949.  
  950.